﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace QLBH
{
    public partial class CTHD : UserControl
    {
        public CTHD()
        {
            InitializeComponent();
            load_Infoct();
        }
        #region khai báo
        List<Int32> Gia = new List<Int32>();
        ICT List_Ct = new DCT();
        IQcollections lHd = new ICollection();
        CCTHD Ct;
        #endregion
        #region hàm làm mới
        private void refesh()
        {
            cSHd.Text = "";
            cMSp.Text = "";
            tSl.Text = "";
        }
        #endregion
        #region hàm load thông tin
        private void load_Infoct()
        {
            List_Ct.Load("CTHD.a");
            load_GridCt();
        }
        private void load_GridCt()
        {
            if (List_Ct != null)
            {
                dgvCT_kq.Visible = true;
                DataTable tb = new DataTable("CTHD");
                DataColumn colNc = new DataColumn("Số HD");
                DataColumn colCp = new DataColumn("Mã SP");
                DataColumn colH = new DataColumn("Số Lượng");
                tb.Columns.Add(colNc);
                tb.Columns.Add(colCp);
                tb.Columns.Add(colH);

                foreach (CCTHD ct in List_Ct)
                {
                    if (ct.SoHD.ToString() == cSHd.Text)
                    {
                        //lHd.Load("HoaDon.a");
                        DataRow row = tb.NewRow();
                        row["Số HD"] = ct.SoHD;
                        row["Mã SP"] = ct.MaSp;
                        row["Số Lượng"] = ct.SoLuong;
                        //lHd.Save("HoaDon.a");
                        //
                        tb.Rows.Add(row);
                    }
                }
                dgvCT_kq.DataSource = tb;
            }
        }
        #endregion   
        #region IO
        private void cSHd_Click(object sender, EventArgs e)
        {
            cMSp.Text = "";
            IQcollections dc = new ICollection();
            dc.Load("HoaDon.a");
            cSHd.Items.Clear();
            foreach (CHoadon hd in dc)
            {
                cSHd.Items.Add(hd.SoHD);
            }
        }

        private void cMSp_Click(object sender, EventArgs e)
        {
            ISP ls = new DSanPham();
            ls.Load("SanPham.a");
            cMSp.Items.Clear();
            Gia.Clear();
            foreach (CSanpham sp in ls)
            {
                cMSp.Items.Add(sp.MaSp);
                Gia.Add(sp.Gia);
            }
        }

        private void cSHd_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cMSp_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }
        #endregion
        #region thêm
        public void ThemCt()
        {
            lHd.Load("HoaDon.a");
            Ct = new CCTHD();
            Ct.SoHD = int.Parse(cSHd.Text);
            Ct.MaSp = cMSp.Text;
            Ct.SoLuong = Int32.Parse(tSl.Text);
            lHd[cSHd.SelectedIndex].TriGia += Ct.SoLuong * Gia[cMSp.SelectedIndex];
            MessageBox.Show(lHd[cSHd.SelectedIndex].TriGia.ToString());
            lHd.Save("HoaDon.a");

            List_Ct.Add(Ct);
            List_Ct.Save("CTHD.a");
        }
        #endregion
        #region xóa
        private void xoaCt()
        {
            int i = 0;

            if (cSHd.Text == "")
            {
                MessageBox.Show("Nhập số hóa đơn cần xóa!", "Thông Báo");
            }
            else if (cSHd.Text != "")
            {
                foreach (CCTHD oc in List_Ct)
                {
                    if (oc.SoHD.ToString() == cSHd.Text && oc.MaSp == cMSp.Text && oc.SoLuong.ToString() == tSl.Text)
                    {
                        List_Ct.RemoveAt(i);
                        List_Ct.Save("CTHD.a");
                        this.load_GridCt();
                        MessageBox.Show("Đã xóa thành công!", "Thông Báo");
                        return;
                    }
                    ++i;
                }
                MessageBox.Show("Không tìm thấy CT!", "Thông Báo");
            }
        }
        #endregion
        #region Sửa
        private int SuaCt()
        {
            int i = 0;

            if (cSHd.Text == "")
            {
                MessageBox.Show("Nhập số CTHD cần sửa!", "Thông Báo");
            }
            else if (cSHd.Text != "")
            {
                foreach (CCTHD oc in List_Ct)
                {
                    if (oc.SoHD.ToString() == cSHd.Text)
                        if (oc.MaSp == cMSp.Text)
                            return i;
                    ++i;
                }
                MessageBox.Show("Không tìm thấy CTHD cần sửu!", "Thông Báo");
            }
            return -1;
        }
        #endregion
        #region Sự kiện Click
        private void bThemct_Click(object sender, EventArgs e)
        {
            if (cSHd.Text == "" || cMSp.Text == "" || tSl.Text == "")
                MessageBox.Show("Bạn chưa nhập đủ thông tin!", "Thông Báo");
            else
            {
                if (Test())
                {
                    ThemCt();
                    this.load_GridCt();
                    MessageBox.Show("Thêm thành công!", "Thông Báo");
                    
                }
            }
        }

        private void cSHd_TextChanged(object sender, EventArgs e)
        {
            load_GridCt();
        }

        private void bXoact_Click(object sender, EventArgs e)
        {
            xoaCt();
        }

        private void dgvCT_kq_Click(object sender, EventArgs e)
        {
            if (dgvCT_kq.SelectedRows.Count > 0)
            {
                DataGridViewRow row = dgvCT_kq.SelectedRows[0];
                int vtHang = dgvCT_kq.Rows.IndexOf(row);
                cSHd.Text = dgvCT_kq[0, vtHang].Value.ToString();
                cMSp.Text = dgvCT_kq[1, vtHang].Value.ToString();
                tSl.Text = dgvCT_kq[2, vtHang].Value.ToString();
            }
        }

        private void bSuact_Click(object sender, EventArgs e)
        {
            if (SuaCt() != -1)
            {
                int i = SuaCt();
                //update info
                List_Ct[i].MaSp = cMSp.Text;
                List_Ct[i].SoLuong = int.Parse(tSl.Text);
                List_Ct.Save("CTHD.a");
                //
                this.load_GridCt();
                MessageBox.Show("Đã sửa thông tin thành công!", "Thông Báo");
            }
        }
        #endregion
        #region kiểm tra CT hợp lệ
        private bool Test()
        {
            foreach (CCTHD oc in List_Ct)
            {
                if (oc.SoHD.ToString() == cSHd.Text && oc.MaSp == cMSp.Text)
                {
                    MessageBox.Show("Đã tồn tại mã SP trong CT hóa đơn này!", "Thông Báo", MessageBoxButtons.OK);
                    cMSp.Text = "";
                    return false;
                }
            }
            return true;
        }
        #endregion
    }
}
